package com.factory.rental.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.factory.rental.dto.ReportDTO;
import com.factory.rental.dto.ReportStatisticsDTO;
import com.factory.rental.model.Report;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * 报表服务接口
 */
public interface ReportService extends IService<Report> {
    /**
     * 生成报表
     * @param reportDTO 报表DTO
     * @return 生成的报表实体
     */
    Report generateReport(ReportDTO reportDTO);

    /**
     * 根据ID获取报表
     * @param id 报表ID
     * @return 报表实体
     */
    Optional<Report> getReportById(Long id);

    /**
     * 根据类型获取报表列表
     * @param type 报表类型
     * @return 报表列表
     */
    List<Report> getReportsByType(Report.ReportType type);

    /**
     * 获取所有报表（分页）
     * @param pageable 分页参数
     * @return 分页后的报表列表
     */
    Page<Report> getAllReports(Pageable pageable);

    /**
     * 更新报表
     * @param id 报表ID
     * @param reportDTO 报表DTO
     * @return 更新后的报表实体
     */
    Report updateReport(Long id, ReportDTO reportDTO);

    /**
     * 删除报表
     * @param id 报表ID
     */
    void deleteReport(Long id);

    /**
     * 导出报表
     * @param id 报表ID
     * @return 报表文件路径
     */
    String exportReport(Long id);

    /**
     * 获取报表统计数据
     * @return 报表统计数据
     */
    ReportStatisticsDTO getReportStatistics();
}